package com.sky.utils;

import com.alibaba.fastjson.JSONObject;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;

import java.util.HashMap;
import java.util.Map;
/*
* 微信小程序登录工具类
* */
public class OpenUtil {
    //微信小程序登录接口
    public static final String WX_LOGIN="https://api.weixin.qq.com/sns/jscode2session";

    //传递的类型
    public static final String GRANT_TYPE="authorization_code";

/*
* 获取openid
* @param appid 小程序的id
* @param secret 小程序的秘钥
* @param js_code 前端获取的验证码
* @return openid 微信用户的唯一标识
* */
    public static String getOpenId(String appid, String secret, String js_code){
        //调用微信小程序的登录接口，获取用户信息   设置请求参数->执行请求->获取响应->解析响应->返回openid

        Map<String, String> params = new HashMap<>();
        params.put("appid", appid);
        params.put("secret", secret);
        params.put("js_code", js_code);
        params.put("grant_type", GRANT_TYPE);

        String respond = HttpClientUtil.doGet(WX_LOGIN, params);

        //解析响应，转换成json对象
        JSONObject json = JSONObject.parseObject(respond);
        String openid = json.getString("openid");
        if(ParaVerifUtil.isEmpty(openid)){
            throw new RuntimeException("获取openid失败");
        }

        return openid;
    }
}
